//VUE NVUE公用
const jmURL = 'https://api.leduotv.com/wp-api/getvodurl.php'

/* ==========================================
 * = TXvideo.js，当前文件很多代码可以简写的，
 * = 但考虑到第一版发出去还有小白有些看着
 * = 很困难，第二版（新版）当前版本，新增的
 * = 所有功能，都写的很详细，你看看着代码很多，
 * = 注释也很多，是的，就是这样，照顾只有基础
 * = 的新人也能仔细看代码，会看的明白，每个地方
 * = 的实现原理。才写了很多。
 * = 如果你功底很不错，想拿来二开，你也完全可以
 * = 先看一边代码，再去优化，精简各种方法。
 * ==========================================
 *
 */
export default {
	data() {
		return {
			xtsetting:[],
			//curlvideoIndex:0,//当前第几个视频被选中 class
			videoitem:[],//完整的视频信息
			//算了，不拆分，全部用videoitem就行
			VideoInfo:[],//拆分的视频信息[标题|简介|年代|评分|电视剧|大陆]
			
			//已移动到leduozyTXvideo.js
			//autoPayer:false,//是否开始播放视频？用于解密完成后
			
			SetVideoID:0,//储存视频ID
			
			
			// 废弃，改版中
			//ZyTypeVideo:1,//后台配置的视频资源类型
			
			
		}
	},
	watch:{
		
	},
	onUnload(){
		
	},
	onLoad:function(e) {
		// 解析url参数
		let item = JSON.parse(decodeURIComponent(e.item))
		//console.log(item)
		this.videoitem = this.videoitem.concat(item)
		// 输出视频信息
		console.log(this.videoitem)
		// 储存视频ID
		this.SetVideoID = this.videoitem[0].vod_id
		
		this.xtsetting = uni.getStorageSync('xtsetting')
		console.log("系统设置")
		console.log(this.xtsetting)
		
		/* ===========================
		 * = 	执行批量拆分字符串	 =
		 * =-------------------------=
		 * = @1. 拆分播放源名称       =
		 * = @2. 拆分播放源链接       =
		 * = @3. 拆分解析接口         =
		 * ===========================
		 */
		this.InitSplit()
		
		
		/* 
		 1. 新版本已废弃后台资源类型判断
		 2. 已经简化了代码并功能一样
		 */
		
		/* ================================
		 * =   判断后台配置的视频资源类型   =
		 * = ***************************  =
		 * = * @类型 1 = 乐多资源       *  =
		 * = * @类型 2 = 其他 (非乐多)  *  =
		 * = ***************************  =
		 * =   由于乐多资源需要解密所以用   =
		 * =   到了两种方案，来针对不同类   =
		 * =   型。推荐使用乐多，更稳定！   =
		 * = ---------------------------  =
		 * =   非乐多资源，支持官方链接调   =
		 * =   用解析接口，也支持纯M3U8和   =
		 * =   纯MP4格式播放。             =
		 * = ---------------------------  =
		 * =   支持后台资源配置为“其他”的   =
		 * =   时候，苹果CMS后台播放源组    =
		 * =   有官方链接，也有纯M3U8纯M    =
		 * =   P4，也有乐多加密链接。       =
		 * ================================
		 *
		 */
		
		
		
		
	},
	
	methods:{
		/* ===========================
		 * = 	执行批量拆分字符串	 =
		 * =-------------------------=
		 * = @1. 拆分播放源名称       =
		 * = @2. 拆分播放源链接       =
		 * = @3. 拆分解析接口         =
		 * ===========================
		 */
		InitSplit(){
			/* 其他资源||官方资源 */
			console.log("其他资源||官方资源||拆分字符串")
			//执行批量拆分字符串 [qtzyTXvideo.js]
			this.SetVodPlayfromUrl()
			//执行批量拆分字符串-解析接口 [qtzyTXvideo.js]
			this.SetVodPlayZyjiekolist()
		},
		
		
		
		
		/* *************************************
		 * *  以下全部为页面上的点击事件       * *
		 * *  如点击了简介，集数等            * *
		 * *************************************
		 */
		
		/* ================================================
		 * =  点击了页面上的第index集数(btn按钮),非播放器内  =
		 * =  @事件来源于“VideoXuanji”组件                 =
		 * ================================================
		 */
		videojiTap(options){
			//集数点击
			console.log("集数点击")
			console.log(options)
			this.curlvideoIndex = options.index
			this.scrollviewitem = options.ScViewitem
			
			
			
//////////////////////////////
			
			// 新版优化中
			
			// 
			
			/* =============================== 
			 * = 开始判断是否需要解析并播放
			 * = @1.官方资源需要解析，得到真实地址后给播放器
			 * = @2.直链资源，直接播放 (MP4,M3U8)
			 * ===================================
			 */
			this.qitaZyVideoPlay(options)
		},
		
		/* =============================================
		 * =  2.其他资源（需要解析，得到真实地址后给播放器）
		 * =============================================
		 */
		qitaZyVideoPlay(options){
			// 判断是否是M3U8/MP4直链(真实地址)，非网页地址(官方播放源)
			this.VideoItemMatch(options)
		},
		VideoItemMatch(options){
			console.log(options)
			var str = options.url
			console.log("当前视频链接 = " + str)
			var m3u8Reg = RegExp(/.m3u8/);//直链
			var mp4Reg = RegExp(/.mp4/);//直链
			var htmlReg = RegExp(/.html/);//官方
			var blblReg = RegExp(/.bilibili.com/);//小破站
			var leduoReg = RegExp(/XM/);//乐多
			if(str.match(m3u8Reg)){
			    // 包含 
				console.log("包含.m3u8,当前为“其他”-直链资源")
				console.log(str.match(m3u8Reg))
				let VideoZyType = 'm3u8'
				// M3U8直链，为拆分“第N集$http://v.1.com...”
				this.SetVideoUrlSplit(options,VideoZyType)
				
			}else if(str.match(mp4Reg)){
			    // 包含 
				console.log("包含.mp4,当前为“其他”-直链资源")
				console.log(str.match(mp4Reg))
				let VideoZyType = 'mp4'
				// MP4直链，为拆分“第N集$http://v.1.com...”
				this.SetVideoUrlSplit(options,VideoZyType)
				
			}else if(str.match(htmlReg)){
				console.log("包含.html,当前为“其他”-官方资源")
				let VideoZyType = 'html'
				// 官方资源，为拆分“第N集$http://v.1.com...”
				this.SetVideoUrlSplit(options,VideoZyType)
				
			}else if(str.match(blblReg)){
				console.log("包含.bilibili.com,当前为“其他”-小破站资源")
				//使用和官方一样的标识"html"，
				//因为接口支持官方也可能就支持小破站
				//如果你感觉这样不好，你也可以自己二开！
				let VideoZyType = 'html'
				// 官方资源，为拆分“第N集$http://w...b...com...”
				this.SetVideoUrlSplit(options,VideoZyType)
				
			}else if(str.match(leduoReg)){
				console.log("包含XM,当前为“乐多”-乐多资源")
				let VideoZyType = 'XM'
				// 乐多资源，为拆分“第N集$XM...”
				this.SetVideoUrlSplit(options,VideoZyType)
				
			}else {
				// 几乎是用不到这里的，除非你的资源和大众都不一样
				console.log("使用了不支持的资源")
				uni.showToast({
					title:'使用了不支持的资源',
					icon:'none'
				})
			}
		},
		/* ==================================
		 * =  拆分字符串，从url里的$开始分割
		 * =  并判断是否需要解析,直链无需解析
		 * ==================================
		 */
		SetVideoUrlSplit(options,VideoZyType){
			let spUrl = options.url
			let splistUrl = spUrl.split("$")
			console.log(splistUrl)
			let event = {
				url:splistUrl[1],
				index:options.index,
				pic:options.pic
			}
			if (VideoZyType == 'm3u8' || VideoZyType == 'mp4'){
				// 纯M3U8或纯MP4直链，无需解析，直接播放
				this.qitaZyVideoPlayTrue(event)
				
			}else if (VideoZyType == 'html'){
				
				// 先解析，再播放
				let jxType = 'html'//解析类型，官方资源或B站资源
				this.qitaZyVideojiexiUrl(event,jxType)
			}else if (VideoZyType == 'XM'){
				
				// 先解析，再播放
				let jxType = 'XM'//解析类型，乐多资源
				this.qitaZyVideojiexiUrl(event,jxType)
			}
		},
		/* ===================================
		 * =   调用解析接口，得出真实的播放链接
		 * ===================================
		 */
		qitaZyVideojiexiUrl(event,jxType,i){
			if (i == undefined) {
				i = 0
			}
			if (jxType == 'html'){
				// 官方资源,使用后台配置的解析接口来解析
				let jxUrl = this.ZyjiekoUrllist[i].jxurl
				this.getVideoUrl(event,jxUrl,i)
			}else {
				// 乐多资源,只能用乐多的解密接口来解析
				let jxUrl = jmURL+'?vid='
				this.getVideoUrl(event,jxUrl)
			}
			
		},
		async getVideoUrl(event,jxUrl,i){
			console.log("当前 i = " + i)
			let jxUrllength = Number(this.ZyjiekoUrllist.length-1)
			console.log("jxUrllength = " +jxUrllength)
			console.log("当前解析URl = " + jxUrl)
			await this.request({
				type:'video',//判断请求类型
				LoadingTitle:'解析中',
				url:jxUrl+event.url
			})
			.then(res=> {
				//console.log("解析成功")
				console.log(res)
				
				// 有的解析接口失效后，解析会成功返回
				// 但是返回的url是需要解析的链接。
				// 所以这里解析成功也得判断下。
				let str2 = res.data.url
				let htmlReg2 = RegExp(/.html/);//直链
				if (str2.match(htmlReg2)){
					console.log("解析接口已失效")
					let e = {
						title:'解析接口已失效'
					}
					this.isUniShowToast(e)
				}else {
					let options = {
						url:res.data.url,
						pic:event.pic,
						index:event.index
					}
					// 开始播放
					this.qitaZyVideoPlayTrue(options)
					let e = {
						title:'解析成功'
					}
					this.isUniShowToast(e)
				}
				
			})
			.catch(err=> {
				console.log("err")
				console.log(err)
				let options = {
					title:'解析失败'
				}
				if (i !== undefined) {
					// i 不等于空
					// 则切换下一个解析接口尝试解析
					if (i == jxUrllength){
						console.log("所有接口失效")
						this.isUniShowToast(options)
					}else {
						console.log("尝试使用下一个接口解析")
						let index = Number(i+1)
						let jxType = 'html'
						this.qitaZyVideojiexiUrl(event,jxType,index)
					}
				}else {
					console.log("解析失败")
					this.isUniShowToast(options)
					// i 等于空
					// 乐多解密接口，只有一个
				}
			})
		},
		/* =============================================
		 * =  2.其他资源（解析后与纯直链拆分后）开始调用播放
		 * =============================================
		 */
		qitaZyVideoPlayTrue(options){
			console.log("options")
			console.log(options)
			// #ifdef H5
			/* ==================================================
			 * = 如果是H5端，就把当前视频url传给切换播放视频事件   =
			 * ==================================================
			 */
			let h5bofangqi = this.h5VideoVUEIndex
			if (h5bofangqi == 0){
				// 第一次，需要先创建播放器
				this.autoVideoVUE(options)
				this.h5VideoVUEIndex = 1
			}else {
				// 切换播放链接和封面
				this.onIndexVideoVUE(options)
			}
			// #endif
			
			/* ==================================================
			 * = [其他资源] 如果是APP端，就把当前视频url传给切换播放视频事件   =
			 * ==================================================
			 */
			// #ifdef APP-PLUS
			this.autoVideoNVUE(options)
			// #endif
			
		},
		
		
		
		
		/* ================================================
		 * =  点击了页面上的第index播放源 [qq,mgtv,qiyi....]
		 * =  @事件来源于“VideoXuanYuan”组件                 =
		 * ================================================
		 */
		videoPlayfromTap(options){
			// 选源点击
			console.log(options)
			this.curlPlayFromIndex = options.index
			console.log("options.index = " + options.index)
			this.scrollviewYuanitem = options.ScViewitem
			let event = {
				title:'换源成功请选集'
			}
			this.isUniShowToast(event)
		},
		
		
		
		
		
		
		/* =================================================
		 * =  点击了页面上的第index个grid按钮(如收藏、追剧..)  =
		 * =  @事件来源于“VideoGrid”组件                   =
		 * =================================================
		 */
		VideoGridTap(click){
			console.log("当前点击类型为 = "+click)
			//判断点击类型
			if (click == 'zhuiju') {
				console.log("追剧被点击")
			} else if (click == 'shoucang') {
				console.log("收藏被点击")
			} else if (click == 'share') {
				console.log("分享被点击")
			} else {
				console.log("err")
			}
		},
		
		/* =================================================
		 * =  点击了页面上的打开弹窗事件(如简介、选集..)  =
		 * =  @事件来源于“VideoGrid”组件                   =
		 * =================================================
		 */
		
		
		
		/* ====================
		 * =   统一的uni.showToast
		 * =
		 *
		 */
		isUniShowToast(options){
			uni.showToast({
				title:options.title,
				duration:options.duration||1500,
				icon:'none'
			})
		}
	}
}